package com.njts.Polymorphism.computer;

/**
 * @author David GE
 * Date  2025/11/20
 * 1.定义笔记本类，具备开机，关机和使用USB设备的功能。具体是什么USB设
 * 备，笔记本并不关心，只要符合USB规格的设备都可以。鼠标和键盘要想能
 * 在电脑上使用，那么鼠标和键盘也必须遵守USB规范，不然鼠标和键盘的生
 * 产出来无法使用；
 * 2.进行描述笔记本类，实现笔记本使用USB鼠标、USB键盘
 * 3.类和功能介绍：
 * a.USB，包含开启功能、关闭功能
 * b.笔记本类，包含运行功能、关机功能、使用USB设备功能
 * c.鼠标类，要符合USB接口
 * d.键盘类，要符合USB接口
 */
// 接口:就是一系列功能和规范/标准的集合
public interface USB {
    // 接口中的成员变量一定是公开的常量
    // 接口没有构造函数,规则,规范不需要创建对象
    double VERSION = 3.0;
    public abstract void open();
    void close();
    // 默认方法
   default void desc(){
        System.out.println("这是USB标准设备功能");
    }
    default void geVersion(){
        System.out.println(VERSION);
    }
    // 3静态方法
    public static void method(){
        System.out.println("USB的静态方法");
    }
}
// 通过继承能否实现一台设备,多个功能?
// Java当中只有单继承,没有多继承,表述事物和事物之间"具有"某类性质->接口
// 实现:Java中一个类可以实现多个接口
class Computer implements USB,Cable{

    @Override
    public void open() {
        //this.VERSION=this.VERSION-1;//报错,常量不可修改
        System.out.println("电脑开机");
    }

    @Override
    public void close() {
        System.out.println("电脑关机");
    }

    @Override
    public void connect() {
        System.out.println("电脑接入网线,链接互联网");
    }
    @Override
    public  void desc(){
        System.out.println("电脑USB标准设备功能");
    }
}

class KeyBoard implements USB{

    @Override
    public void open() {
        System.out.println("键盘接入");
    }
    @Override
    public void close() {
        System.out.println("键盘断开");
    }
}

class Mouse implements USB{

    @Override
    public void open() {
        System.out.println("鼠标连接");
    }

    @Override
    public void close() {
        System.out.println("鼠标脱机");
    }
}